package com.sayice.gomoku.service;

import com.sayice.gomoku.pojo.User;

/**
 * 用户业务
 */
public interface UserService {
    /**
     * 注册
     * @param user 用户
     * @return 返回 sql 语句影响的行数
     */
    int register(User user);
    
    /**
     * 登录
     * @param user 用户
     * @return 返回 User 对象，返回 null 表示登录失败
     */
    User login(User user);
    
    /**
     * 设置用户当前使用的棋盘
     * @param userId 用户编号
     * @param boardId 棋盘编号
     * @return 返回 sql 语句影响的行数 (用户表)
     */
    int setBoard(int userId, int boardId);
    
    /**
     * 注册后设置用户当前使用的棋盘为默认棋盘
     * @param userId 用户编号
     * @param defaultBoardId 默认棋盘编号
     * @return 返回 sql 语句影响的行数 (用户表)
     */
    int setDefaultBoard(int userId, int defaultBoardId);
    
    /**
     * 增加用户对局数
     * @param id 用户编号
     * @return 返回 sql 语句影响的行数
     */
    int addPlayCount(int id);
    
    /**
     * 增加用户获胜数
     * @param id 用户编号
     * @return 返回 sql 语句影响的行数
     */
    int addWinCount(int id);
    
    /**
     * 用户名是否已存在
     * @param name 用户名
     * @return 已存在则返回 true，否则返回 false
     */
    boolean existsName(String name);
    
    /**
     * 根据用户编号查找用户
     * @param id 用户编号
     * @return 返回 User 对象，返回 null 表示该用户不存在
     */
    User getUserById(int id);
    
    /**
     * 根据用户名查找用户
     * @param name 用户名
     * @return 返回 User 对象，返回 null 表示该用户不存在
     */
    User getUserByName(String name);
}
